<?php
class helper_autoinsert
{
	
//通用修改
	/*
	 * @var QDB_ActiveRecord_Interface
	 */
	protected  $union_table = NULL; //关联数据表 exp Orders::meta()
	public  $status = 'success';
	/**
	 * 
	 *2011-12-20-下午03:43:21 by 460932465
	 * @access 初始化...
	 * @param QDB_ActiveRecord_Interface $table
	 */
	function __construct($table)
	{
		$this->union_table = $table;
	}
	
	/**
	 * 
	 *2011-12-20-下午12:45:32 by 460932465
	 * @return 成功返回true 失败返回错误字符串
	 * 
	 * @param Qform
	 * @param 主键列名 $pkname
	 * @param 附加数据 $appendData
	 */
	 function add($form,$pkname,$appendData = NULL)
	{
		if (is_null($this->union_table))
		{			
			return '对不起,关联数据表未设置';
		}
		//$url = url($this->_context->controller_name.'/'.$this->_context->action_name);
		//$TempForm = 'Form_'.$this->_context->controller_name.$this->_context->action_name;
		//获取主键
		//$idkey = $this->union_table->table->getPK();
		//如果是数组 取第1个键
		//if (is_array($idkey))
		//{
		//	$idkey = array_shift($idkey);
		//}
		$Context = QContext::instance();
		$id = intval($Context->$pkname);
		$form_data = null;
		//如果是修改操作
		if($id)
		{
			$form_data = $this->union_table->find($id)->getone();
			if (!$form_data->id())
			{
				return '不存在数据';
			}
		}
		
		//创建表单对象
			//$form = new $TempForm($url);
		
			
		//如果是GET 数据 存在 新加 || 编辑
		if ($Context->isGET())
		{
			if (!is_null($form_data) && !is_null($appendData))
			{
				$form_data = array_merge($form_data->toArray(),$appendData);
			}else if (!is_null($form_data))
			{
				$form_data = $form_data->toArray();
			}else if(!is_null($appendData))
			{
				$form_data = $appendData;
			}
				//存在数据
			if (!is_null($form_data))
			{
			$form->import($form_data);
			}
			return $form;
			//$this->_view['form'] = $form;	
		}else if ($Context->isPOST())
		{
			if ($form->validate($_POST))
			{
				//获取内容
				$form_values = $form->values();
				//如果是新加入
				if (is_null($form_data))
				{
					$form_database_obj = $this->union_table->newObject($form_values);
				}else
				{
					$form_database_obj = $form_data->changeProps($form_values);
				}
				//开始更新 开启事务
				QDB::getConn()->startTrans();
				try {
					$form_database_obj->save(); //默认99级
					QDB::getConn()->completeTrans(true);
				} catch (Exception $e) {
					//失败回滚
					QDB::getConn()->completeTrans(false);
					//返回错误
					$this->status = 'error';
					return ($e->getMessage());
				}
				//成功修改
				return ('数据编辑成功');
				
			}else 
			{//验证失败返回错误信息
				$this->status = 'error';
			// 参数校验返回
				foreach ($form->elements() as $element){
					if (!$element->isValid()){
						$err = implode(',', $element->errorMsg());
					}
				}
				return $err;
			}
		}
		
	}
}
?>